package com.cloud.message.dto;

import com.cloud.common.validator.EnumCheck;
import com.cloud.message.constant.MessageLevelEnum;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotEmpty;

/**
 * 消息
 */
@Data
public class MessageDTO {
    /**
     * 消息级别（取值Normal/Higher）
     */
    @NotEmpty(message = "消息级别不能为空")
    @EnumCheck(values = "Normal,Higher", message = "消息级别（取值Normal/Higher）")
    private String level = MessageLevelEnum.Normal.name();

    /**
     * 消息主题（长度不能超过32）
     */
    @NotEmpty(message = "消息主题不能为空")
    @Length(max = 32, message = "消息主题（长度不能超过32）")
    private String topic;

    /**
     * 消息内容（长度不能超过8192）
     */
    @NotEmpty(message = "消息内容不能为空")
    @Length(max = 8192, message = "消息内容（长度不能超过8192）")
    private String content;

    /**
     * 消息路由Key（长度不能超过32）
     */
    @NotEmpty(message = "消息路由Key不能为空")
    @Length(max = 32, message = "消息路由Key（长度不能超过32）")
    private String hashKey;

    /**
     * 延时秒数（0~15552000秒之间）
     */
    @Range(min = 0, max = 15552000, message = "延时秒数（0~15552000秒之间）")
    private Integer delaySeconds = 0;

}
